package in.rob.client.dialog; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import in.controller.handler.ChannelMessageDialogResponseHandler; import in.lib.Constants; import in.lib.builder.DialogBuilder; import in.lib.manager.APIManager; import in.lib.utils.Views.Injectable; import in.model.Channel; import in.model.DraftMessage; import in.rob.client.R; import in.rob.client.dialog.base.InputPostDialog; @Injectable public class NewMessageDialog extends InputPostDialog { private boolean finish = false; @Override public void initialiseDraft() { setDraft(new DraftMessage()); } @Override public void initialiseDialog() { super.initialiseDialog(); getActionAccount().setOnClickListener(null); } @Override public void retrieveArguments(Bundle args) { super.retrieveArguments(args); if (args != null) { if (args.containsKey(Constants.EXTRA_CHANNEL)) { ((DraftMessage)getDraft()).setChannelId(((Channel)args.getParcelable(Constants.EXTRA_CHANNEL)).getId()); } if (args.containsKey(Constants.EXTRA_CHANNEL_ID)) { ((DraftMessage)getDraft()).setChannelId(args.getString(Constants.EXTRA_CHANNEL_ID)); } } if (TextUtils.isEmpty(((DraftMessage)getDraft()).getChannelId())) { // TODO: Add no channel id set error finish(); return; } setTitle(R.string.new_message); setMaxChars(2048); // TODO: Replace this with config } @Override public void onPositiveButtonClick(View view) { super.onPositiveButtonClick(view); if (!TextUtils.isEmpty(getDraft().getPostText())) { getDraft().setImageCount(getDraft().getImages().size()); APIManager.getInstance().postMessage(getContext(), (DraftMessage)getDraft(), new ChannelMessageDialogResponseHandler(getContext(), (int)(getDraft().getDate() / 1000L))); } } @Override public void onNegativeButtonClick(View view) { if (finish) { finish(); return; } AlertDialog.Builder builder = DialogBuilder.create(getContext()); builder.setTitle(R.string.confirm); builder.setMessage(R.string.discard_changes); builder.setPositiveButton(R.string.yes, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { finish = true; onNegativeButtonClick(null); } }); builder.setNegativeButton(R.string.no, null); builder.show(); } }